シャミアの秘密分散法 (k, n)閾値法

シャミアの秘密分散法とは?

シャミアの秘密分散法(Shamir's Secret Sharing)は、秘密の情報を複数の「断片」に分割し、そのうちの一定数(閾値)を集めなければ秘密を復元できないようにする暗号技術です。これにより、単一の断片が漏洩しても秘密全体が危険にさらされることはありません。

秘密の分散により以下のことが実現できます。

機密性:単一の断片だけでは秘密が漏洩しないため安全性が高まります。

可用性:複数の断片のうち一定数(閾値)を集めれば秘密を復元できるため、紛失や障害にも強くなります。

権限の分散:秘密の管理や復元に複数人の協力が必要となり、権限を分散できます。

この技術は、多項式ラグランジュ補間という数学的な手法に基づいています。秘密の値を多項式のy切片(x=0の時の値)として設定し、その多項式から複数の点を生成します。これらの点が秘密の「断片」となります。

このページで体験できるシャミアの秘密分散法 (k, n)閾値法は、基本的なアルゴリズムを分かりやすく実装したものです。 実際の運用では、より安全性や効率性を高めるために、大きな素数や有限体を用いたり、暗号学的に洗練されたアルゴリズムが使われます。 このデモは仕組みの理解を目的としているため、実際のセキュリティ用途には適していません。

参考に閾値暗号方式のレポートをGeminiに書いてもらいました。こちらを参照してください。

このページの使い方

  1. 設定: 「復元に必要な断片数 (k)」と「生成する断片数 (n)」、そして「秘密の数値」を自由に設定してください。
  2. 断片の生成: 「断片を生成」ボタンを押すと、入力した秘密の数値をy切片とする多項式がランダムに生成されます。この多項式と、それから生成されたn個の断片がグラフとリストに表示されます。
  3. 秘密の復元: 断片リストから、k個の断片を選択してください。選択が完了すると、自動的にそれらの点を通る曲線(元の多項式)が描画され、秘密の数値が復元されます。画面下部には、復元に使用された数式と解法が表示されます。

断片リスト


「練習で作った者たち」へ

トップページへ